using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.ModelToDataContract
{

    /// <summary>
    /// Traduz um modelo para um contrato de dados
    /// </summary>
    [Serializable]
    public class Justificativa
    {

		public Justificativa(){}

		/// <summary>
        /// ToChaveOrdemRequest
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
		public Communication.Bovespa.ManutencaoOrdens.Justificativa.ChaveOrdemRequest ToChaveOrdemRequest(Model.ChaveOrdem from)
        {
            Communication.Bovespa.ManutencaoOrdens.Justificativa.ChaveOrdemRequest retorno = 
                new Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Justificativa.ChaveOrdemRequest();

            if (from == null)
                return null;

            retorno.DataOrdem = from.DataOrdem;
            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;

            return retorno;
		}

        
		/// <summary>
        /// ToJustificativa
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaRequest ToJustificativaRequest(Model.Justificativa from)
        {
            if (from == null) return null;

            return new Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaRequest
            {
                ApelidoCliente = from.ApelidoCliente,
                Ativo = from.Ativo,
                Codigo = from.Codigo,
                CodigoUsuario = from.CodigoUsuario,
                DataAlteracao = from.DataAlteracao,
                DataOrdem = from.DataOrdem,
                DataHoraOrdem = from.DataHoraOrdem,
                Justificativa = from.JustificativaOrdem,
                NaturezaOperacao = from.NaturezaOperacao != null ? (Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Justificativa.NaturezaOperacao?)from.NaturezaOperacao.Value : null,
                NumeroOrdem = from.NumeroOrdem,
                NumeroSubSequenciaOrdem = from.NumeroSubSequenciaOrdem,
                PendenteMensageria = from.PendenteMensageria
            };
		}

        
		/// <summary>
        /// ToJustificativa - LIST
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public List<Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaRequest> ToJustificativaRequest(ModelCollection<Model.Justificativa> from)
        {
            List<Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaRequest> retorno = null;

            if (from == null) return null;

            retorno = new List<Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaRequest>();

            foreach (Model.Justificativa item in from)
            {
                retorno.Add(this.ToJustificativaRequest(item));
            }

            return retorno;
		}

        public Bovespa.ManutencaoOrdens.Justificativa.FiltroJustificativa ToFiltroJustificativaRequest(Model.Parameter.FiltroJustificativa from)
        {
            Bovespa.ManutencaoOrdens.Justificativa.FiltroJustificativa to = null;

            if (from != null)
            {
                to = new Bovespa.ManutencaoOrdens.Justificativa.FiltroJustificativa();

                to.Codigo = from.Codigo;
                to.DataOrdem = from.DataOrdem;
                to.NumeroOrdem = from.NumeroOrdem;
                to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            }

            return to;
        }
    }

}